Skip to content

Latest commit

 

History

History
74 lines (58 loc) · 1.85 KB

File metadata and controls

74 lines (58 loc) · 1.85 KB

290. Word Pattern

Given a pattern and a string str, find if str follows the same pattern.

Here follow means a full match, such that there is a bijection between a letter in pattern and a non-empty word in str.

Example 1:

Input: pattern = "abba", str = "dog cat cat dog" Output: true 

Example 2:

Input: pattern = "abba", str = "dog cat cat fish" Output: false 

Example 3:

Input: pattern = "aaaa", str = "dog cat cat dog" Output: false 

Example 4:

Input: pattern = "abba", str = "dog dog dog dog" Output: false 

Note:

You may assume pattern contains only lowercase letters, and str contains lowercase letters that may be separated by a single space.

Solutions (Python)

1. Brute Force

classSolution: defwordPattern(self, pattern: str, str: str) ->bool: words=str.split() iflen(pattern) !=len(words): returnFalseforiinrange(len(pattern)): forjinrange(i+1, len(pattern)): if (pattern[j] ==pattern[i]) != (words[j] ==words[i]): returnFalsereturnTrue

2. HashMap

classSolution: defwordPattern(self, pattern: str, str: str) ->bool: words=str.split() iflen(pattern) !=len(words): returnFalsematch= {} used=set() forch, woinzip(pattern, words): if (chinmatch) != (woinused): returnFalseelifchnotinmatch: match[ch] =woused.add(wo) elifmatch[ch] !=wo: returnFalsereturnTrue
close